﻿using System;
using System.Collections.Generic;
using System.Text;

using System.Data;
using System.Data.Odbc;
using WLMCoreLibrary;
using System.Xml.Serialization;

namespace SAW_Core
{
    public class Condicionespago : BaseClass
    {
        #region private fields
        private String _NombreCondicion;
        private int _dias;
        #endregion

        #region public properties
        public String NombreCondicion { get; set; }
        public int dias { get; set; }
        #endregion

        #region constructors
        public Condicionespago(ref dbConnector ConexionDB)
        {
            ConexionDBInterna = ConexionDB;
            WLMClassBinder classBinder = new WLMClassBinder(ref ConexionDB);
            id = classBinder.NewRecord("CONDICIONESPAGO");
            string queryString = "";
            queryString = "SELECT * FROM CONDICIONESPAGO WHERE id='" + this.id + "'";
            GetRecord(queryString);
        }

        public Condicionespago(int registryId, ref dbConnector ConexionDB)
        {
            ConexionDBInterna = ConexionDB;
            string queryString = "";
            queryString = "SELECT * FROM CONDICIONESPAGO WHERE id='" + registryId + "'";

            this.GetRecord(queryString);
        }
        public Condicionespago(DataRow dataRow, ref dbConnector ConexionDB)
        {
            ConexionDBInterna = ConexionDB;
            this.GetRecord(dataRow);
        }
        #endregion

        #region public methods


        public void Delete()
        {
            string queryString = "";
            queryString = "DELETE FROM CONDICIONESPAGO WHERE id='" + this.id + "'";
            ConexionDBInterna.ExecuteCommand(queryString);

        }
        #endregion


        #region Private Methods
        private void GetRecord(string queryString)
        {
            OdbcDataReader reader = ConexionDBInterna.ExecuteReader(queryString);
            if (reader.HasRows)
            {
                if (!reader.IsDBNull(reader.GetOrdinal("id")))
                    id = (System.Int32)reader["id"];
                if (!reader.IsDBNull(reader.GetOrdinal("fechaCreacion")))
                    fechaCreacion = Convert.ToDateTime(reader["fechaCreacion"]);
                if (!reader.IsDBNull(reader.GetOrdinal("fechaModificacion")))
                    fechaModificacion = Convert.ToDateTime(reader["fechaModificacion"]);
                if (!reader.IsDBNull(reader.GetOrdinal("idUsuario")))
                    idUsuario = (System.Int32)reader["idUsuario"];
                if (!reader.IsDBNull(reader.GetOrdinal("idUsuarioModificacion")))
                    idUsuarioModificacion = (System.Int32)reader["idUsuarioModificacion"];
                if (!reader.IsDBNull(reader.GetOrdinal("NombreCondicion")))
                    NombreCondicion = (System.String)reader["NombreCondicion"];
                if (!reader.IsDBNull(reader.GetOrdinal("dias")))
                    dias = (System.Int32)reader["dias"];
            }
        }


        private void GetRecord(DataRow dataRow)
        {
            if (dataRow != null)
            {
                if (dataRow["id"] != null)
                    id = (System.Int32)dataRow["id"];
                if (dataRow["fechaCreacion"] != null)
                    fechaCreacion = (System.DateTime)dataRow["fechaCreacion"];
                if (dataRow["fechaModificacion"] != null)
                    fechaModificacion = (System.DateTime)dataRow["fechaModificacion"];
                if (dataRow["idUsuario"] != null)
                    idUsuario = (System.Int32)dataRow["idUsuario"];
                if (dataRow["idUsuarioModificacion"] != null)
                    idUsuarioModificacion = (System.Int32)dataRow["idUsuarioModificacion"];
                if (dataRow["NombreCondicion"] != null)
                    NombreCondicion = (System.String)dataRow["NombreCondicion"];
                if (dataRow["dias"] != null)
                    dias = (System.Int32)dataRow["dias"];
            }
        }


        protected override void UpdateBind()
        {
            StringBuilder strCommand = new StringBuilder();
            strCommand.Append("UPDATE CONDICIONESPAGO set ");
            strCommand.Append("fechaModificacion='" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "'");
            strCommand.Append(",idUsuarioModificacion='" + this.idUsuarioModificacion.ToString() + "'");
            strCommand.Append(",NombreCondicion=\"" + WLMFunctions.comillas(NombreCondicion) + "\"");
            strCommand.Append(",dias='" + this._dias.ToString() + "'");
            strCommand.Append(" WHERE id='" + this.id + "'");
            ConexionDBInterna.ExecuteCommand(strCommand.ToString());
        }
        #endregion
    }

    public class CondicionespagoCollection
    {

        private List<Condicionespago> _items;
        public List<Condicionespago> Elementos { get; set; }
        public CondicionespagoCollection()
        {
        }
        public CondicionespagoCollection(ref dbConnector ConexionDB)
        {

            string strCommand = "SELECT id FROM CONDICIONESPAGO ";
            OdbcDataReader dataReader = ConexionDB.ExecuteReader(strCommand);
            Elementos = new List<Condicionespago>();
            while (dataReader.Read())
            {
                Condicionespago newItem = new Condicionespago(Convert.ToInt32(dataReader["id"]), ref ConexionDB);
                Elementos.Add(newItem);
            }
            dataReader.Close();
            dataReader.Dispose();
        }
    }

    public class DominioEmail : BaseClass
    {
        #region private fields
        private String _Dominio;
        #endregion

        #region public properties
        public String Dominio { get; set; }
        #endregion

        #region constructors
        public DominioEmail(ref dbConnector ConexionDB)
        {
            ConexionDBInterna = ConexionDB;
            WLMClassBinder classBinder = new WLMClassBinder(ref ConexionDB);
            id = classBinder.NewRecord("DOMINIOSEMAIL");
            string queryString = "";
            queryString = "SELECT * FROM DOMINIOSEMAIL WHERE id='" + this.id + "'";
            GetRecord(queryString);
        }

        public DominioEmail(int registryId, ref dbConnector ConexionDB)
        {
            ConexionDBInterna = ConexionDB;
            string queryString = "";
            queryString = "SELECT * FROM DOMINIOSEMAIL WHERE id='" + registryId + "'";

            this.GetRecord(queryString);
        }

        public DominioEmail(string nombreDominio, ref dbConnector ConexionDB)
        {
            ConexionDBInterna = ConexionDB;
            string queryString = "";
            queryString = "SELECT * FROM DOMINIOSEMAIL WHERE dominio='" + nombreDominio + "'";

            this.GetRecord(queryString);
        }

        public DominioEmail(DataRow dataRow, ref dbConnector ConexionDB)
        {
            ConexionDBInterna = ConexionDB;
            this.GetRecord(dataRow);
        }
        #endregion

        #region public methods


        public void Delete()
        {
            string queryString = "";
            queryString = "DELETE FROM DOMINIOSEMAIL WHERE id='" + this.id + "'";
            ConexionDBInterna.ExecuteCommand(queryString);

        }
        #endregion


        #region Private Methods
        private void GetRecord(string queryString)
        {
            OdbcDataReader reader = ConexionDBInterna.ExecuteReader(queryString);
            if (reader.HasRows)
            {
                if (!reader.IsDBNull(reader.GetOrdinal("id")))
                    id = (System.Int32)reader["id"];
                if (!reader.IsDBNull(reader.GetOrdinal("fechaCreacion")))
                    fechaCreacion = Convert.ToDateTime(reader["fechaCreacion"]);
                if (!reader.IsDBNull(reader.GetOrdinal("fechaModificacion")))
                    fechaModificacion = Convert.ToDateTime(reader["fechaModificacion"]);
                if (!reader.IsDBNull(reader.GetOrdinal("idUsuario")))
                    idUsuario = (System.Int32)reader["idUsuario"];
                if (!reader.IsDBNull(reader.GetOrdinal("idUsuarioModificacion")))
                    idUsuarioModificacion = (System.Int32)reader["idUsuarioModificacion"];
                if (!reader.IsDBNull(reader.GetOrdinal("Dominio")))
                    Dominio = (System.String)reader["Dominio"];
            }
        }


        private void GetRecord(DataRow dataRow)
        {
            if (dataRow != null)
            {
                if (dataRow["id"] != null)
                    id = (System.Int32)dataRow["id"];
                if (dataRow["fechaCreacion"] != null)
                    fechaCreacion = (System.DateTime)dataRow["fechaCreacion"];
                if (dataRow["fechaModificacion"] != null)
                    fechaModificacion = (System.DateTime)dataRow["fechaModificacion"];
                if (dataRow["idUsuario"] != null)
                    idUsuario = (System.Int32)dataRow["idUsuario"];
                if (dataRow["idUsuarioModificacion"] != null)
                    idUsuarioModificacion = (System.Int32)dataRow["idUsuarioModificacion"];
                if (dataRow["Dominio"] != null)
                    Dominio = (System.String)dataRow["Dominio"];
            }
        }


        protected override void UpdateBind()
        {
            StringBuilder strCommand = new StringBuilder();
            strCommand.Append("UPDATE DOMINIOSEMAIL set ");
            strCommand.Append("fechaModificacion='" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "'");
            strCommand.Append(",idUsuarioModificacion='" + this.idUsuarioModificacion.ToString() + "'");
            strCommand.Append(",Dominio=\"" + WLMFunctions.comillas(Dominio) + "\"");
            strCommand.Append(" WHERE id='" + this.id + "'");
            ConexionDBInterna.ExecuteCommand(strCommand.ToString());
        }
        #endregion
    }

    public class DominioEmailCollection
    {

        private List<DominioEmail> _items;
        public List<DominioEmail> Elementos { get; set; }
        public DominioEmailCollection()
        {
        }
        public DominioEmailCollection(ref dbConnector ConexionDB)
        {

            string strCommand = "SELECT id FROM DOMINIOSEMAIL ";
            OdbcDataReader dataReader = ConexionDB.ExecuteReader(strCommand);
            Elementos = new List<DominioEmail>();
            while (dataReader.Read())
            {
                DominioEmail newItem = new DominioEmail(Convert.ToInt32(dataReader["id"]), ref ConexionDB);
                Elementos.Add(newItem);
            }
            dataReader.Close();
            dataReader.Dispose();
        }
    }



    public class ResultadoProcesoVenta
    {
        #region Private fields
        private int _noCotizacion;
        private int _noPedido;
        private int _noRemision;
        private int _noSalida;
        private List<String> _items;
        private string _mensaje;
        private bool _error=false;
        private int idFacuraGenerada;

        public int IdFacuraGenerada
        {
            get;
            set;
        }
        #endregion

        #region Public Properties
        public int NoCotizacion { get; set; }
        public int NoPedido { get; set; }
        public int NoRemision { get; set; }
        public int NoSalida { get; set; }
        public List<String> Items { get; set; }
        public string Mensaje { get; set; }
        public bool Error { get; set; }
        #endregion

        #region Constructors
        public ResultadoProcesoVenta()
        {
            Items = new List<string>();
        }
        #endregion
    }

    public class Direccion : BaseClass
    {
        #region public properties
        [XmlAttribute()]
        public int idCliente { get; set; }
        [XmlAttribute()]
        public int idProveedor { get; set; }
        [XmlAttribute()]
        public int idContacto { get; set; }
        [XmlAttribute()]
        public String Calle { get; set; }
        [XmlAttribute()]
        public String NumeroExterior { get; set; }
        [XmlAttribute()]
        public String NumeroInterior { get; set; }
        [XmlAttribute()]
        public String Colonia { get; set; }
        [XmlAttribute()]
        public String Ciudad { get; set; }
        [XmlAttribute()]
        public String Municipio { get; set; }
        [XmlAttribute()]
        public String Estado { get; set; }
        [XmlAttribute()]
        public String CP { get; set; }
        [XmlAttribute()]
        public String Localidad { get; set; }
        [XmlAttribute()]
        public String Pais { get; set; }
        [XmlAttribute()]
        public String EntreCalles { get; set; }
        [XmlAttribute()]
        public String Referencias { get; set; }
        [XmlAttribute()]
        public String Observaciones { get; set; }
        #endregion

        #region constructors
        public Direccion() { }

        public Direccion(ref dbConnector ConexionDB)
        {
            ConexionDBInterna = ConexionDB;
            getGUID("DIRECCIONES");
        }

        public Direccion(int registryId, ref dbConnector ConexionDB)
        {
            ConexionDBInterna = ConexionDB; string queryString = "";
            queryString = "SELECT * FROM DIRECCIONES WHERE id='" + registryId + "'";
            WLMClassBinder classBinder = new WLMClassBinder(ref ConexionDBInterna);
            this.GetRecord(queryString);
        }
        public Direccion(DataRow dataRow, dbConnector ConexionDBInterna)
        {
            this.GetRecord(dataRow);
        }
        #endregion

        #region public methods
        public void Delete()
        {
            string queryString = "";
            queryString = "DELETE FROM DIRECCIONES WHERE id='" + id + "'";
            ConexionDBInterna.ExecuteCommand(queryString);
        }
        #endregion

        #region Private Methods
        private void GetRecord(string queryString)
        {
            OdbcDataReader reader = ConexionDBInterna.ExecuteReader(queryString);
            if (reader.HasRows)
            {
                GetKeyData(reader);
                if (!reader.IsDBNull(reader.GetOrdinal("idProveedor")))
                    idProveedor = (System.Int32)reader["idProveedor"];
                if (!reader.IsDBNull(reader.GetOrdinal("idContacto")))
                    idContacto = (System.Int32)reader["idContacto"];
                if (!reader.IsDBNull(reader.GetOrdinal("Calle")))
                    Calle = (System.String)reader["Calle"];
                if (!reader.IsDBNull(reader.GetOrdinal("NumeroExterior")))
                    NumeroExterior = (System.String)reader["NumeroExterior"];
                if (!reader.IsDBNull(reader.GetOrdinal("NumeroInterior")))
                    NumeroInterior = (System.String)reader["NumeroInterior"];
                if (!reader.IsDBNull(reader.GetOrdinal("Colonia")))
                    Colonia = (System.String)reader["Colonia"];
                if (!reader.IsDBNull(reader.GetOrdinal("Ciudad")))
                    Ciudad = (System.String)reader["Ciudad"];
                if (!reader.IsDBNull(reader.GetOrdinal("Municipio")))
                    Municipio = (System.String)reader["Municipio"];
                if (!reader.IsDBNull(reader.GetOrdinal("Estado")))
                    Estado = (System.String)reader["Estado"];
                if (!reader.IsDBNull(reader.GetOrdinal("CP")))
                    CP = (System.String)reader["CP"];
                if (!reader.IsDBNull(reader.GetOrdinal("Localidad")))
                    Localidad = (System.String)reader["Localidad"];
                if (!reader.IsDBNull(reader.GetOrdinal("Pais")))
                    Pais = (System.String)reader["Pais"];
                if (!reader.IsDBNull(reader.GetOrdinal("EntreCalles")))
                    EntreCalles = (System.String)reader["EntreCalles"];
                if (!reader.IsDBNull(reader.GetOrdinal("Referencias")))
                    Referencias = (System.String)reader["Referencias"];
                if (!reader.IsDBNull(reader.GetOrdinal("Observaciones")))
                    Observaciones = (System.String)reader["Observaciones"];
            }
        }


        private void GetRecord(DataRow dataRow)
        {
            if (dataRow != null)
            {
                GetKeyData(dataRow);
                if (dataRow["idCliente"] != null)
                    idCliente = (System.Int32)dataRow["idCliente"];
                if (dataRow["idProveedor"] != null)
                    idProveedor = (System.Int32)dataRow["idProveedor"];
                if (dataRow["idContacto"] != null)
                    idContacto = (System.Int32)dataRow["idContacto"];
                if (dataRow["Calle"] != null)
                    Calle = (System.String)dataRow["Calle"];
                if (dataRow["NumeroExterior"] != null)
                    NumeroExterior = (System.String)dataRow["NumeroExterior"];
                if (dataRow["NumeroInterior"] != null)
                    NumeroInterior = (System.String)dataRow["NumeroInterior"];
                if (dataRow["Colonia"] != null)
                    Colonia = (System.String)dataRow["Colonia"];
                if (dataRow["Ciudad"] != null)
                    Ciudad = (System.String)dataRow["Ciudad"];
                if (dataRow["Municipio"] != null)
                    Municipio = (System.String)dataRow["Municipio"];
                if (dataRow["Estado"] != null)
                    Estado = (System.String)dataRow["Estado"];
                if (dataRow["CP"] != null)
                    CP = (System.String)dataRow["CP"];
                if (dataRow["Localidad"] != null)
                    Localidad = (System.String)dataRow["Localidad"];
                if (dataRow["Pais"] != null)
                    Pais = (System.String)dataRow["Pais"];
                if (dataRow["EntreCalles"] != null)
                    EntreCalles = (System.String)dataRow["EntreCalles"];
                if (dataRow["Referencias"] != null)
                    Referencias = (System.String)dataRow["Referencias"];
                if (dataRow["Observaciones"] != null)
                    Observaciones = (System.String)dataRow["Observaciones"];
            }
        }


        protected override void UpdateBind()
        {
            StringBuilder strCommand=new StringBuilder();
            strCommand.Append("UPDATE DIRECCIONES set ");
            strCommand.Append("GUID='" + GUID.ToString() + "'");
            strCommand.Append(",fechaModificacion='" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "'");
            strCommand.Append(",idUsuarioModificacion='" + idUsuarioModificacion.ToString() + "'");
            strCommand.Append(",idCliente='" + idCliente.ToString() + "'");
            strCommand.Append(",idProveedor='" + idProveedor.ToString() + "'");
            strCommand.Append(",idContacto='" + idContacto.ToString() + "'");
            strCommand.Append(",Calle=\"" + WLMFunctions.comillas(Calle) + "\"");
            strCommand.Append(",NumeroExterior=\"" + WLMFunctions.comillas(NumeroExterior) + "\"");
            strCommand.Append(",NumeroInterior=\"" + WLMFunctions.comillas(NumeroInterior) + "\"");
            strCommand.Append(",Colonia=\"" + WLMFunctions.comillas(Colonia) + "\"");
            strCommand.Append(",Ciudad=\"" + WLMFunctions.comillas(Ciudad) + "\"");
            strCommand.Append(",Municipio=\"" + WLMFunctions.comillas(Municipio) + "\"");
            strCommand.Append(",Estado=\"" + WLMFunctions.comillas(Estado) + "\"");
            strCommand.Append(",CP=\"" + WLMFunctions.comillas(CP) + "\"");
            strCommand.Append(",Localidad=\"" + WLMFunctions.comillas(Localidad) + "\"");
            strCommand.Append(",Pais=\"" + WLMFunctions.comillas(Pais) + "\"");
            strCommand.Append(",EntreCalles=\"" + WLMFunctions.comillas(EntreCalles) + "\"");
            strCommand.Append(",Referencias=\"" + WLMFunctions.comillas(Referencias) + "\"");
            strCommand.Append(",Observaciones=\"" + WLMFunctions.comillas(Observaciones) + "\"");
            strCommand.Append(" WHERE id='" + id + "'");
            ConexionDBInterna.ExecuteCommand(strCommand.ToString());
        }
        #endregion
    }




    public class DireccionCollection
    {
        private dbConnector ConexionDBInterna;
        public List<Direccion> Elementos { get; set; }
        public DireccionCollection()
        {
        }
        public DireccionCollection(ref dbConnector ConexionDB)
        {

            ConexionDBInterna = ConexionDB; string strCommand = "SELECT id FROM DIRECCIONES ";
            OdbcDataReader dataReader = ConexionDBInterna.ExecuteReader(strCommand);
            Elementos = new List<Direccion>();
            while (dataReader.Read())
            {
                Direccion newItem = new Direccion(Convert.ToInt32(dataReader["id"]), ref ConexionDB);
                Elementos.Add(newItem);
            }
            dataReader.Close();
            dataReader.Dispose();
        }
    }
}
